/**
 * 
 */
package com.desksoft.ecommerce.service.interf.logistics;

import java.util.Date;
import java.util.List;

import com.desksoft.ecommerce.entity.logistics.dto.R002;
import com.desksoft.ecommerce.util.result.ServiceResult;
import com.desksoft.ecommerce.vo.logistics.DailyBalanceVO;
import com.desksoft.ecommerce.vo.logistics.R002QryVO;
import com.desksoft.ecommerce.vo.logistics.StorageVO;
import com.desksoft.ecommerce.vo.logistics.StoreItemQryVO;
import com.desksoft.ecommerce.vo.logistics.StoreItemVO;
import com.desksoft.ecommerce.vo.logistics.StoreQryVO;
import com.desksoft.ecommerce.vo.logistics.StoreVO;
import com.desksoft.ecommerce.vo.logistics.StorebarVO;
import com.desksoft.utility.pagination.Page;
import com.desksoft.utility.service.ServiceInterface;

/***************************************
 * <pre>
 * 版权所有：杭州迪科软件 保留所有权利
 * 创建日期: Jun 23, 2011 11:01:34 AM
 * 创建作者：yejw
 * 文件名称：IStoreService.java
 * 版本：
 * 功能：门店信息接口
 * 最后修改时间：Jun 23, 2011 11:01:34 AM
 * 修改记录：
 * </pre>
 *****************************************/

public interface IStoreService extends ServiceInterface {
	
	// ********************** 公共方法 start *****************************

	/**
	 * 获取单一门店信息
	 */
	public ServiceResult<StoreVO> getStoreVO(StoreQryVO storeQryVO);
	
	/**
	 * 门店信息列表
	 * 
	 * @param storeQryVO
	 *            门店查询值对象
	 *       vo属性isPrecision: 为且只为ture则精确查询, 默认模糊查询
	 *       vo属性storeCode:    门店编码
	 *       vo属性UserID        用户编码
	 *       vo属性StoreName     门店名称  模糊查询
	 *       vo属性PYCode        拼音码     模糊查询
	 *       vo属性MartType      经营类型  
	 *       vo属性StoreType     门店类型     
	 *       vo属性pageNo:       当前页
	 *       vo属性pageSize:     每页显示记录数
	 *       以上信息可选
	 * @return
	 *       门店信息列表
	 */
	public ServiceResult<Page<StoreVO>> getStores(StoreQryVO storeQryVO);
	
	/**
	 * 获取门店商品信息
	 * @param storeItemQryVO
	 *   门店商品查询值对象 
	 *     vo属性storeCode:    门店编码
	 *     vo属性userID       用户编码
	 *     vo属性itemcode     商品编码
	 *     vo属性itemName    商品名称
	 *     vo属性PYCode      拼音码
	 *     vo属性barcode      条形码
	 *     vo属性storetype     门店类型
	 *     以上信息可选
	 * @return
	 *            门店商品查询值对象
	 */
	public ServiceResult<Page<StoreItemVO>> getStoreItem(StoreItemQryVO storeItemQryVO);
	
	/**
	 * 获取商品信息
	 * @param storeItemQryVO
	 * @return
	 */
	public ServiceResult<List<StoreItemVO>> getStoreItemByCode(
			StoreItemQryVO storeItemQryVO) ;

	/******淘宝店添加
	 * @param storeVO
	 *  vo 属性 storeCode
	 * return
	 *   
	 */
	public ServiceResult<Boolean> insertStore(StoreVO storeVo);
	
	/******淘宝店修改
	 * @param storeVO
	 *  vo 属性 storeCode
	 * return
	 *   
	 */
	public ServiceResult<Boolean> iupdateStore(StoreVO storeVo);
	
	/**
	 * 查询
	 * @param storeVo
	 * @return
	 */
	public ServiceResult<StoreVO> selectStore(StoreVO storeVo);
	
	
	/******sessionkey 有效时间修改
	 * @param storeVO
	 *  vo 属性 storeCode
	 * return
	 *   
	 */
	public ServiceResult<Boolean> sessionUpdateStore(StoreVO storeVo);
	
	/**
	 *  pos 获取单个商品信息
	 * @param storeItemVO
	 * @return
	 */
	public ServiceResult<List<StoreItemVO>> getStoreItemByPos(StoreItemVO storeItemVO);
		
	/**
	 * 获取门店最新日结日期
	 * @param storeVo
	 * @return
	 */
	public ServiceResult<Date> getStoreBalaDate(StoreVO storeVo);
	
	/**
	 * 修改门店最新日结日期
	 * @param dailyVo
	 * @return
	 */
	public ServiceResult<String> updateStore(DailyBalanceVO dailyVo);

	/**
	 * 取门店商品信息，无分页
	 * @param storeItemQryVO
	 * @return
	 */
	public ServiceResult<StoreItemVO> getStoreItemList(
			StoreItemQryVO storeItemQryVO);

	/**
	 * 要货模块取商品信息出现性能问题，单独做的查询
	 * 	根据商品编码，门店编码，取要货时商品的基本信息.同时检测供应商，商品是否合法
	 * 	（商品基本信息，库存信息，供应商信息）
	 * 	完了之后取合同价格
	 * @param itemVO
	 * @return
	 */
	public ServiceResult<StoreItemVO> getStoreItemByPurchase(StoreItemQryVO itemVO);
	
	/**
	 * 获取门店商品信息
	 * @param storeItemQryVO
	 *   门店商品查询值对象 
	 *     vo属性storeCode:    门店编码
	 *     vo属性userID       用户编码
	 *     vo属性itemcode     商品编码
	 *     vo属性itemName    商品名称
	 *     vo属性PYCode      拼音码
	 *     vo属性barcode      条形码
	 *     vo属性storetype     门店类型
	 *     以上信息可选
	 * @return
	 *            门店商品查询值对象
	 */
	public ServiceResult<Page<StoreItemVO>> getStoreItemToPos(StoreItemQryVO storeItemQryVO);
	
	public ServiceResult<List<StoreItemVO>> getStoreItemAloneToPos(StoreItemQryVO storeItemQryVO);
	
	/**
	 * 日结数据校验
	 */
	public ServiceResult<String> doCheckDayAcc(DailyBalanceVO dailyVO);

	/**
	 * 获取门店信息列表
	 * 
	 * @param
	 */
	public ServiceResult<List<StoreVO>> queryStoreInfo(StoreVO storeVO);
	
	/**
	 * pos分离获取商品价格
	 * @param storeItemQryVO
	 * @return
	 */
	public ServiceResult<List<StoreItemVO>> getStoreItemAloneInMen(StoreItemQryVO storeItemQryVO);
	

	/**
	 * 根据BarCode,ItemCode模糊查询ItemCode
	 * @param storeItemVO
	 * @return
	 */
	public ServiceResult<List<StoreItemVO>> selectByBarItemCode(StoreItemVO storeItemVO);
}
